iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
ChatGPT & Codex

AI 時代的輕量化開發:ChatGPT 打造 LINE 多模態記帳與續訂預警 Agent系列 第 6

[Day 06] Google Cloud + Service Account + Sheets API:打造 SubWise 的雲端資料庫

  • 分享至 

  • xImage
  •  

前言

前幾天已經完成 SubWise 的第一階段基礎建設:

  • Day 01:完成專案規劃、LINE Developer 設定與 Gemini API 環境準備
  • Day 02:建立 Flask Backend,完成第一個 API
  • Day 03:部署 Render,讓後端服務公開至網路
  • Day 04:完成 LINE Webhook 串接,讓 LINE 可以與 Flask 溝通
  • Day 05:建立 Echo Bot 與 Command Router,讓 Bot 能根據指令回覆不同內容

目前 SubWise 已經具備:
使用者 → LINE Bot → Flask Backend → 回覆訊息

但是一個真正的記帳管理工具,不能只會聊天。下一步需要解決的重要問題是:

使用者輸入的消費紀錄,要儲存在哪裡?

因此今天開始進入 SubWise 的資料層建置,目標是:建立 Google Cloud 環境,讓 Python Backend 能安全連線 Google Sheets,為後續 AI 記帳功能建立資料基礎。


今日實作實錄:十步驟打造資料層

一、建立 Google Cloud Project

首先建立專屬於 SubWise 的 Google Cloud 專案。Google Cloud Project 是後續管理各種雲端服務的基礎,未來包含 Google Sheets API、Google Drive API、Gemini API 等其他雲端服務,都會透過這個專案統一管理。完成後,SubWise 正式擁有自己的雲端開發環境。

二、啟用 Google Sheets API 與 Google Drive API

在 Google Cloud Console 中啟用了兩個 API:

  • Google Sheets API:讓 Python 可以操作 Google Sheet,未來會用於儲存消費紀錄、儲存訂閱資訊、查詢財務資料。
  • Google Drive API:Google Sheets 實際上是存在 Google Drive 中,因此需要同時開啟,讓 Service Account 可以存取。

三、建立 Service Account

接著建立 SubWise 專用的 Service Account。Service Account 可以理解為「給程式使用的 Google 帳號」,與一般使用 Gmail 登入不同,後端程式會透過 Service Account 進行驗證:

Python → Service Account → Google Sheets

這種方式更符合正式專案開發流程,也避免直接使用個人帳號,是業界常見的服務對服務驗證做法。

四、下載 credentials.json 驗證憑證

建立 Service Account 後下載 credentials.json,這份檔案包含 Service Account 身份資訊、私密金鑰、Google API 驗證資訊,Python 後續會用它完成身份驗證。

五、保護敏感憑證,避免上傳 GitHub

由於 credentials.json 包含重要資訊,因此不能提交到公開 GitHub。修改 .gitignore 加入 credentials.json,並確認 git status 沒有顯示這個檔案,代表「程式可以使用憑證,但 GitHub 不會上傳敏感資訊」,完成基本安全設定。

六、建立 SubWise Database 與資料結構

建立 Google Sheet「SubWise Database」,並開始設計未來資料結構,今天先建立三個工作表:

1.Expenses(一般消費紀錄)

Date Category Amount Note

未來使用者輸入「午餐120」,AI 分析後會寫入這張表。

2.Subscriptions(訂閱服務管理)

Service Price Billing Cycle Next Billing Date Status

未來可以管理 Netflix、Spotify、ChatGPT Plus 等定期扣款服務。

3.Settings(系統設定)

Key Value

未來可以保存使用者偏好、Bot 設定、AI Prompt 設定。

在開始寫入資料前,先設計 SubWise 第一版資料結構,將消費紀錄、訂閱管理與系統設定分開管理,讓後續 AI 記帳功能有清楚的資料基礎:
https://ithelp.ithome.com.tw/upload/images/20260807/201785270j8f0IbJAk.png

七、授權 Service Account 存取 Google Sheet

Google Sheet 建立完成後,需要分享給 Service Account,權限設定為 Editor,讓後端程式未來可以讀取資料、新增資料、更新資料。至此,Python 已具備操作 SubWise Database 的完整權限。

八、安裝 Google Sheets Python 套件

在虛擬環境中安裝:

pip install gspread google-auth
  • gspread:負責操作 Google Sheets
  • google-auth:負責 Google 身份驗證

九、建立 Google Sheets 連線測試程式

今天沒有直接修改主程式 app.py,而是新增獨立的 test_google.py,原因是先確認外部服務連線正常,再整合進 LINE Bot,避免同時除錯兩件事。測試流程:

credentials.json → Google Authentication → gspread → SubWise Database

十、第一次成功連線 Google Sheets

執行 python test_google.py,成功得到:

🎉 Google Sheets 連線成功!

📄 試算表名稱:SubWise Database
📚 工作表數量:3

目前工作表:
✅ Expenses
✅ Subscriptions
✅ Settings

🎯 Day06 驗證完成!

這代表五件事同時成立:Python 成功讀取 credentials.json、Google Cloud 驗證成功、Service Account 權限正確、Google Sheets API 正常運作、成功取得 SubWise Database 結構。

透過 Python 撰寫測試程式,成功使用 Service Account 驗證 Google Sheets,代表 SubWise Backend 已經可以與雲端資料庫溝通:
https://ithelp.ithome.com.tw/upload/images/20260807/20178527dpMv3crFpo.png


今天踩到的坑

1.credentials.json 不應該上傳 GitHub
建立 Service Account 後,Google Cloud 會提供 credentials.json,這份檔案包含完整驗證資訊。一開始才意識到,這不是普通設定檔,而是具有 API 存取權限的敏感憑證——如果直接提交到 GitHub,其他人可能取得 Google API 權限,可能造成資料外洩,甚至產生額外 API 費用。因此把 credentials.json 加入 .gitignore,並確認 Git 狀態沒有追蹤這個檔案。這也是第一次在開發過程中實際處理程式碼安全性與敏感資訊管理。

2.Service Account 建立完成,不代表可以存取 Google Sheet
剛開始以為建立 Service Account 後,Python 應該就可以直接連上 Google Sheet,但實際測試時才發現:Service Account 是一個「新的 Google 身份」,並不是我的個人帳號。因此還需要額外一步,把 Google Sheet 分享給 Service Account 的 Email,並設定 Editor 權限。這個觀念很重要——Python → Service Account → Google Sheet 權限,三者缺一不可。


今日成果整理

今天 SubWise 完成了第一版資料層架構,從原本:
LINE Bot → Flask Backend → 回覆訊息

進化成:
LINE Bot → Flask Backend → Google Sheets Database

今天完成:

  • 建立 Google Cloud Project
  • 啟用 Google Sheets API
  • 啟用 Google Drive API
  • 建立 Service Account
  • 下載 credentials.json
  • 完成憑證安全管理
  • 建立 SubWise Database
  • 設計 Expenses / Subscriptions / Settings 三張資料表
  • 授權 Service Account 存取 Google Sheet
  • Python 成功連線 Google Sheets

目前 SubWise 已經具備儲存使用者資料的基礎能力,下一步就可以開始讓「LINE 使用者輸入 → AI 分析內容 → 寫入 Google Sheets」,真正開始實現 AI 記帳。


明日預告

Day 07 正式進入 Google Sheets API + Python 寫入資料,目標是讓程式完成第一次真正的「存資料」動作——從 Python 主動新增第一筆資料到 Google Sheets,讓 SubWise 的記帳功能不再只是測試連線,而是真的能保存資料:

Date Category Amount Note
2026/08/06 Food 120 Lunch

上一篇
[Day 05] 讓 SubWise 從 Webhook 連線升級成會回覆的 LINE Bot:打造第一版對話邏輯
下一篇
[Day 07] 讓 SubWise 真正「記住資料」:Google Sheets CRUD 與資料層模組化
系列文
AI 時代的輕量化開發:ChatGPT 打造 LINE 多模態記帳與續訂預警 Agent21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言